[Nemerle] Jak skopiować plik do końca

warlock

Wymagana wersja kompilatora: 0.2.0
Język: Nemerle
Strona domowa kompilatora (i dokumentacji): www.nemerle.org
Interfejs programu: Konsola

using System;
using System.IO;
class CopyFrom
{
	public static Main () : void
	{
		def ProgType = array ["|","/","-","\\"];
		Console.WriteLine("Ścieżka pliku źródlowego");
		def cfrom = Console.ReadLine();
		Console.WriteLine("Ścieżka docelowa: ");
		def cto = Console.ReadLine();
		def FsFrom = FileStream(cfrom, FileMode.Open, FileAccess.Read, FileShare.Read);
		when(File.Exists(cto)) {
			Console.WriteLine("Plik docelowy istnieje - sprawdzam, czy jest skopiowany do końca...");
		}
		def FsTo = FileStream(cto, FileMode.Append);
		FsFrom.Position = FsTo.Length;
		mutable BrFrom = BinaryReader(FsFrom);
		mutable BrTo = BinaryWriter(FsTo);
		mutable Progress = 0;
		mutable BL = 6144; // wielkość bufforu - 60 kB
		Console.WriteLine("Kopiuje plik {0} do {1}",cfrom,cto);
		while (FsFrom.Length != FsFrom.Position) {
			when ((Convert.ToInt32(FsFrom.Length) - Convert.ToInt32(FsFrom.Position)) < BL) {
				BL = Convert.ToInt32(FsFrom.Length) - Convert.ToInt32(FsFrom.Position);
			}
			BrTo.Write(BrFrom.ReadBytes(BL));
			when(Progress == 3) {
				Progress = 0;
			}
			Console.Write("\b");
			Console.Write(ProgType[Progress]);
			++Progress;
		}
		BrTo.Close();
		BrFrom.Close();
		Console.WriteLine("\bPlik został skopiowany!");
	}
}

1 komentarz

Chyba powinieneś zrobić osobny dział Nemerle albo powinien powstać jakiś dział .NET bo z pogranicza troche nie pasuje :/